package com.peng.community.mapper;

import com.peng.community.entity.Message;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface MessageMapper {

    //查询消息列表窗口的全部消息（就是消息列表，只显示最后一条）
    List<Message> selectConversations(@Param("userId") int userId, @Param("offset")int offset, @Param("limit")int limit);

    //查询消息列表的未读消息总数
    int selectConversationsCount(@Param("userId")int userId);

    //查询会话窗口的消息（就是对话框的消息）
    List<Message> selectLetters(@Param("conversationId")String conversationId, @Param("offset")int offset, @Param("limit")int limit);

    //查询会话窗口会话总数
    int selectLetterCount(@Param("conversationId")String conversationId);

    //查询未读消息总数
    //若传递conversationId，就专门查询这个对话的未读数量，若不传递，就查询所有的未读消息
    int selectLetterUnreadCount(@Param("userId")int userId, @Param("conversationId")String conversationId);

    int insertMessage(Message message);

    int updateMessagesStatus(@Param("ids") List<Integer> messageIds, @Param("status") int status);

    int updateStatus(@Param("ids") List<Integer> messageIds, @Param("status") int status);

    //查询最新的系统通知 (int userId, String topic)
    Message findLeastNotice(@Param("userId") int userId, @Param("topic") String topic);

    //查询系统通知总数量
    int findNoticeCount(@Param("userId") int userId, @Param("topic") String topic);

    //查询未读的系统通知数量
    int findNoticeUnreadCount(@Param("userId") int userId, @Param("topic") String topic);


    //查询一个主题的所有通知
    List<Message> findNotices(@Param("userId") int userId, @Param("topic") String topic, @Param("offset")int offset, @Param("limit")int limit);

}
